﻿using System.Windows;
using CategoryTest.ViewModel; // 引用 ViewModel 命名空间
using Autodesk.Revit.UI; // 引用 RevitAPIUI
using Autodesk.Revit.DB; // 引用 RevitAPI
using System; // 添加 System 引用

namespace CategoryTest.View
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow(ExternalCommandData commandData)
        {
            InitializeComponent(); // <--- 确保这是构造函数的第一行！

            // 在 Code-behind 中创建和设置 DataContext
            this.DataContext = new MainWindowViewModel(commandData);

            // 关联 TreeView 的 SelectedItemChanged 事件（如果不用 Behavior）
            // navigationTree.SelectedItemChanged += NavigationTree_SelectedItemChanged;
        }

        // 如果不用 Behavior 或直接绑定，可以在这里处理 TreeView 选择变化
        /*
        private void NavigationTree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
        {
            if (this.DataContext is MainWindowViewModel viewModel && e.NewValue is TreeNodeModel selectedNode)
            {
                viewModel.SelectedNode = selectedNode; // 手动更新 ViewModel 的属性
            }
        }
        */

        // 确保窗口关闭时正确释放资源（如果需要）
        protected override void OnClosed(EventArgs e)
        {
            base.OnClosed(e);
            // 可选：执行清理操作，例如断开事件监听器等
            if (this.DataContext is IDisposable disposable)
            {
                disposable.Dispose();
            }
        }
    }
}